package com.mhr.ai.cr.provider

import com.mhr.ai.cr.provider.impl.DashScopeProvider
import com.mhr.ai.cr.provider.impl.DeepSeekProvider

/**
 * AI 提供商工厂
 * 负责创建和管理不同的AI提供商实例
 */
object AIProviderFactory {
    
    /**
     * 支持的提供商类型
     */
    enum class ProviderType(val displayName: String) {
        DASHSCOPE("阿里云通义千问"),
        DEEPSEEK("DeepSeek")
    }
    
    private val providers = mutableMapOf<ProviderType, AIProvider>()
    
    init {
        // 注册所有支持的提供商
        registerProvider(ProviderType.DASHSCOPE, DashScopeProvider())
        registerProvider(ProviderType.DEEPSEEK, DeepSeekProvider())
    }
    
    /**
     * 注册提供商
     */
    fun registerProvider(type: ProviderType, provider: AIProvider) {
        providers[type] = provider
    }
    
    /**
     * 获取提供商实例
     */
    fun getProvider(type: ProviderType): AIProvider? {
        return providers[type]
    }
    
    /**
     * 获取所有支持的提供商类型
     */
    fun getSupportedProviders(): List<ProviderType> {
        return ProviderType.values().toList()
    }
    
    /**
     * 根据名称获取提供商类型
     */
    fun getProviderTypeByName(name: String): ProviderType? {
        return ProviderType.values().find { it.name == name }
    }
    
    /**
     * 获取所有提供商的模型信息
     */
    fun getAllModels(): Map<ProviderType, List<AIModel>> {
        return providers.mapValues { (_, provider) -> provider.getSupportedModels() }
    }
}